2016-04-29 71 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來獲得所需的行爲。

即:

  • 「顯示桌面」 不會使窗口消失。
  • 點擊桌面不會使窗口消失。