如何使用Common Lisp CFFI关闭Gtk4应用的所有窗口?
问题描述
关闭Gtk4库的常规方式是关闭所有窗口,但基于GIR的绑定仅支持关闭单个窗口。glib的g_list_foreach函数似乎是可行的解决思路——我想把应用的窗口列表传入该函数,调用window-close来批量关闭窗口。请点评我下面这个初级实现尝试,另外假设我的Gtk4调用逻辑没问题,该怎么用CFFI完成这个操作?
我的尝试代码:
(cffi:define-foreign-library libglib) (cffi:use-foreign-library libglib) (cffi:defcfun "g_list_foreach" :void (list :pointer) (func :pointer) (user-data :pointer)) (cffi:foreign-funcall "g_list_foreach" :pointer (gtk4:application-windows app) :pointer #'gtk4:window-close :pointer nil)
我用cl-gtk4搭建了应用,还在自己的分支里加了glib绑定,但GIR自省没法给出我需要的实现方案。
可能的解决方案
(loop for aw = (gtk4:application-active-window app) until (null aw) do (gtk4:window-close aw))
内容的提问来源于stack exchange,提问作者ruby_object
相关产品推荐
相关产品推荐

