单击桌面使 GTK3 window 消失

Clicking on desktop makes GTK3 window disappear

以下代码生成一个 GTK3 window,它避开任务栏和寻呼​​机并设置类型提示 GDK_WINDOW_TYPE_HINT_DESKTOP。

执行代码时,单击我的桌面会使 window 消失。删除类型提示可以解决问题,但是 "Show desktop" 操作也会使 window 永远消失。

这是 GTK3 的预期行为吗?如果是,我怎样才能获得一个持久的 window 来避免任务栏和寻呼​​机并且不会在 "show desktop" 或点击桌面时消失?

#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;
}

https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#GdkWindowTypeHint

GDK_WINDOW_TYPE_HINT_DESKTOP - 用于创建桌面背景 window。 (不要用这个,除非你做的是桌面后台应用)

GDK_WINDOW_TYPE_HINT_SPLASHSCREEN - 这对你有用吗?

GDK_WINDOW_TYPE_HINT_DIALOG - 或者可能是这个?

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

即:

  • "Show desktop" 不会使 window 消失。
  • 点击桌面不会使 window 消失。