LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2099|回复: 10

GTK窗口问题--如何不被最小化(显示桌面时)

[复制链接]
发表于 2008-12-8 10:01:36 | 显示全部楼层 |阅读模式
请问如何能让GTK窗口在点击显示桌面时不被最小化

在metacity窗口管理器下,gtk_window_deiconify();与gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_TOOLBAR);都不起作用,gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DOCK);窗口不能加可以输入文字的ENTYY,我想在那样的窗口里加一个文本输入框,gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DESKTOP);在窗口不是最大化时点击窗口外部就消失了。

谢谢
 楼主| 发表于 2008-12-8 10:14:43 | 显示全部楼层

代码

int main(int argc,char *argv[])
{
        GtkWidget *window;
        GtkWidget *entry;
        gtk_init(&argc,&argv);
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_TOOLBAR);
        //gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DESKTOP);
        entry = gtk_entry_new_with_max_length (20);
        gtk_container_add(GTK_CONTAINER(window),entry);
        gtk_widget_show(entry);
        gtk_widget_show_all(window);
        gtk_main();
}
回复 支持 反对

使用道具 举报

发表于 2008-12-9 08:00:49 | 显示全部楼层
GDK_WINDOW_TYPE_HINT_DOCK,桌面上那些 panel 都是用這個
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-12 10:21:09 | 显示全部楼层
谢谢回复,但如果用GDK_WINDOW_TYPE_HINT_DOCK,怎么在上面加ENTRY时为不可用状态不能输入呢,请问怎么能让它上面可以加可用的ENTRY。谢谢
回复 支持 反对

使用道具 举报

发表于 2008-12-12 10:42:42 | 显示全部楼层
哦,大概是因為 dock 是收不到 focus 的,focus 不到,自然就不能輸入了。

為甚麽要這樣做?也許可以在收到 "window-state-event" 之後再 deiconify 吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-12 12:04:41 | 显示全部楼层
那样在metacity这个窗口管理器下不起作用呢,gnome下默认用metacity,我试过这个在XFCE的默认窗口管理器XFFM下是可以的。
请问可以让DOCK里面加ENTRY么,怎么GNOME-PANEL中可以加那个输入命令的插件呢。谢谢回复.

Post by khc;1922786
哦,大概是因為 dock 是收不到 focus 的,focus 不到,自然就不能輸入了。

為甚麽要這樣做?也許可以在收到 "window-state-event" 之後再 deiconify 吧
回复 支持 反对

使用道具 举报

发表于 2008-12-13 19:35:59 | 显示全部楼层
GtkWidget *mainWindow = gtk_window_new( GTK_WINDOW_POPUP);
这样的窗口将被窗口管理器忽略。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-15 13:26:15 | 显示全部楼层
谢谢,这样确实不会被最小化,但有与DOCK同样的问题,里面加entry后,它也是不可用状态,请问这个里面可以加entry控件么。

Post by realtang;1923439
GtkWidget *mainWindow = gtk_window_new( GTK_WINDOW_POPUP);
这样的窗口将被窗口管理器忽略。
回复 支持 反对

使用道具 举报

发表于 2008-12-16 09:29:53 | 显示全部楼层
我用的gtk.org发布的2.14.4,添加entry后,没有问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-17 10:49:41 | 显示全部楼层
Post by realtang;1924518
我用的gtk.org发布的2.14.4,添加entry后,没有问题。


谢谢,我的是2.12,我也用下2.14试试,请问你的也是GNOME的METACITY窗口管理器下么。
回复 支持 反对

使用道具 举报

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

本版积分规则

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