2016-04-29 156 views
0

以下代码会生成一个GTK3窗口,该窗口可避免任务栏和寻呼​​机并设置类型提示GDK_WINDOW_TYPE_HINT_DESKTOP。单击桌面使GTK3窗口消失

执行代码时,单击我的桌面使窗口消失。删除类型提示可解决问题,但随后“显示桌面”操作也会使窗口永久消失。

这是GTK3的预期行为吗?如果是的话,我怎样才能获得一个永久窗口,避免任务栏和寻呼​​机,并不会消失在“显示桌面”或点击桌面?

#include <gtk/gtk.h> 

static void activate(GtkApplication *app) { 
    GtkWidget *window=gtk_application_window_new(app); 
    gtk_window_set_skip_taskbar_hint(GTK_WINDOW(window),1); 
    gtk_window_set_skip_pager_hint(GTK_WINDOW(window),1); 
    gtk_window_set_type_hint(GTK_WINDOW(window),GDK_WINDOW_TYPE_HINT_DESKTOP); 
    gtk_widget_show_all(window); 
} 

int main(int argc, char** argv) { 
    GtkApplication *app=gtk_application_new(NULL,G_APPLICATION_FLAGS_NONE); 
    g_signal_connect(app,"activate",G_CALLBACK(activate),NULL); 
    int status=g_application_run(G_APPLICATION(app),argc,argv); 
    g_object_unref(app); 
    return status; 
} 

回答

1

我需要使用GDK_WINDOW_TYPE_HINT_DOCK来获得所需的行为。

即:

  • “显示桌面” 不会使窗口消失。
  • 点击桌面不会使窗口消失。