单击桌面使GTK3窗口消失

时间:2016-04-29 15:32:13

标签: c gtk gtk3

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

执行代码后,单击桌面会使窗口消失。删除类型提示解决了问题,但随后出现了一个"显示桌面"操作也使窗口永远消失。

这是GTK3的预期行为吗?如果是,我如何获得一个避免任务栏和寻呼​​机的持久窗口,并且不会消失在" 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;
}

2 个答案:

答案 0 :(得分:1)

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

那是:

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

答案 1 :(得分:0)

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

GDK_WINDOW_TYPE_HINT_DESKTOP - 用于创建桌面背景窗口。 (除非您正在制作桌面后台应用程序,否则不要使用它)

GDK_WINDOW_TYPE_HINT_SPLASHSCREEN - 这对你有用吗?

GDK_WINDOW_TYPE_HINT_DIALOG - 或许这个?